#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

// 只有一个比特位是1
#define ONE (1<<0)     //0000 0001
#define TWO (1<<1)     //0000 0010
#define THREE (1<<2)   //0000 0100
#define FOUR (1<<3)    //0000 1000

void Print(int flag)
{
    if (flag & ONE)
        printf("one\n");
    if (flag & TWO)
        printf("two\n");
    if (flag & THREE)
        printf("three\n");
    if (flag & FOUR)
        printf("four\n");
}

int main()
{
    printf("stdin->fd: %d\n", stdin->_fileno);
    printf("stdout->fd: %d\n", stdout->_fileno);
    printf("stderr->fd: %d\n", stderr->_fileno);
    
    const char *msg = "hajimi";
    write(1, msg, strlen(msg));

    printf("\n");
    fputs(msg, stdout);
    printf("\n");

    umask(0);
    int fd = open("log.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    int fda = open("loga.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    int fdb = open("logb.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    //int fd = open("log.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    //int fd = open("log.txt", O_WRONLY|O_CREAT, 0666);
    if (fd < 0)
    {
        perror("open");
    }
    const char *buf = "123";
    write(fd, buf, strlen(buf));

    printf("fd: %d\n", fd);
    printf("fda: %d\n", fda);
    printf("fdb: %d\n", fdb);


    close(fd);
    close(fda);
    close(fdb);
    return 0;
}


//int main()
//{
//    Print(ONE|TWO);
//    printf("\n");
//    Print(ONE);
//    printf("\n");
//    Print(ONE|TWO|THREE);
//    printf("\n");
//    Print(ONE|TWO|THREE|FOUR);
//    printf("\n");
//
//    return 0;
//}


//int main(int argc, char *argv[])
//{
//    if (argc != 2)
//    {
//        printf("Usage: %s filename\n", argv[0]);
//        return 1;
//    }
//
//    //chdir("..");
//    const char *filename = argv[1];
//    FILE* fp = fopen(filename, "w");
//    if (fp == NULL)
//    {
//        perror("fopen");
//    }
//
//    //while(1)
//    //{
//    //    char buffer[128];
//    //    if(!fgets(buffer, sizeof(buffer), fp))
//    //        break;
//    //    printf("%s", buffer);
//    //}
//
//
//    //int cnt = 0;
//    //while (cnt < 10)
//    //{
//    //    const char *s = "123\n";
//    //    fputs(s, fp);
//    //    cnt++;
//    //}
//
//    fclose(fp);
//    return 0;
//}
